/**
 * 
 */
package view;

import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.event.KeyEvent;
import java.util.List;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

import model.Bestellung;
import model.Kunde;
import controller.MainWindowListener;
import controller.MenuItemActionListener;

/**
 * @author ulokal
 *
 */
public class MainFrame extends JFrame implements KundenListeAnzeige,KundenDetailAnzeige,KundenSuchLeser{

	private static final long serialVersionUID = 8456560429229699542L;
	

	private KundenSuchLeiste kundenSuche;
	private KundenAnzeigeLeiste kundenAnzeige;

	private KundenDetailAnzeige detailAnzeige;
	private KundenListeAnzeige listenAnzeige;
	private KundenSuchLeser suchLeser;
	
	
	public MainFrame(){
		
		kundenSuche = new KundenSuchLeiste(this);
		kundenAnzeige = new KundenAnzeigeLeiste(this);
		detailAnzeige = kundenAnzeige;
		suchLeser = kundenSuche;
		listenAnzeige = kundenSuche;
		
		this.setTitle("Versandshop");
		initializeMenu();
		
		this.setLayout(new FlowLayout());
		initializeLayout();

		setDefaultValues();
		
	    this.pack();
		this.setLayout(null);
	    this.setMinimumSize(this.getSize());
	    this.addWindowListener(new MainWindowListener());
		
	}
	


	private void setDefaultValues() {
		
		Vector<Kunde> listData = new Vector<Kunde>();

		zeigeKundenListe(listData);
		
	}



	/**
	 * initializes and sets this frame's MenuBar
	 */
	private void initializeMenu(){
		JMenuBar menuBar = new JMenuBar();
		
		JMenu dateiMenu = new JMenu("Datei", true);
		
		JMenuItem beendenItem = new JMenuItem("Beenden");
		beendenItem.setMnemonic(KeyEvent.VK_B);
		beendenItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,KeyEvent.CTRL_DOWN_MASK));
		beendenItem.addActionListener(new MenuItemActionListener(this));
		dateiMenu.add(beendenItem);
		
		menuBar.add(dateiMenu);
		
		this.setJMenuBar(menuBar);
	}
	  
	private void initializeLayout(){

		this.add(kundenSuche);
		this.add(kundenAnzeige);
		
		kundenSuche.setVisible(true);
		kundenAnzeige.setVisible(true);

	}



	public void zeigeKunde(Kunde kunde, List<Bestellung> bestellungen) {
		
		detailAnzeige.zeigeKunde(kunde,bestellungen);
		
	}



	@Override
	public void zeigeKundenListe(List<Kunde> liste) {
		
		this.listenAnzeige.zeigeKundenListe(liste);
		
	}



	@Override
	public String liesKundenSuche() {
		return suchLeser.liesKundenSuche();
	}

}
